home *** CD-ROM | disk | FTP | other *** search
/ The Sunday Times: The Month 2004 August / The Sunday Times - The Month 2004-08.iso / pc / engine / shell / shell.swf / scripts / frame_3 / DoAction_5.as < prev    next >
Encoding:
Text File  |  2004-07-06  |  14.0 KB  |  442 lines

  1. OverlayController = {init:function()
  2. {
  3.    this.activeOverlays = new Array();
  4.    this.overlayHolderCreated = false;
  5.    this.currentPanelType;
  6.    this.overlayHolder = null;
  7.    this.headers = new Array();
  8.    this.buttonShowIntID = null;
  9.    this.nextSection = null;
  10.    this.nextPage = null;
  11.    this.isMultiFileAdvert = false;
  12.    this.numAds = null;
  13.    this.currentAdFile = null;
  14.    this.ignoreMultiAdFlag = false;
  15.    this.oldObj = null;
  16.    this.Overlay = function(objOverlayProps)
  17.    {
  18.       for(var i in objOverlayProps)
  19.       {
  20.          this[i] = objOverlayProps[i];
  21.       }
  22.       TardisInterface.showInterface(Number(this.disableLevel),false);
  23.       if(this.strType == "video")
  24.       {
  25.          lingo("videoOverlay.loadVideo(\"" + this.filename + "\",\"" + this.ownerMc + "\",\"" + this.x + "\",\"" + this.y + "\",\"" + this.w + "\",\"" + this.h + "\",\"" + this.showProgressBar + "\",\"" + this.isFullscreen + "\",\"" + this.closeBut + "\")");
  26.       }
  27.       else
  28.       {
  29.          if(OverlayController.overlayHolder == null)
  30.          {
  31.             OverlayController.overlayHolder = OverlayController.createOverlayHolder();
  32.          }
  33.          var filenameWithoutDots = Tardis.findAndReplace(this.filename,"/","_");
  34.          OverlayController.overlayHolder.createEmptyMovieClip(filenameWithoutDots.substring(0,filenameWithoutDots.length - 4) + "_mc",OverlayController.overlayHolder.depth++);
  35.          this.clipname = OverlayController.overlayHolder[filenameWithoutDots.substring(0,filenameWithoutDots.length - 4) + "_mc"];
  36.          this.clipname._x = 15;
  37.          this.clipname._y = 112;
  38.          this.clipname.loadMovie(Tardis.ASSETS_FOLDER + this.filename);
  39.       }
  40.       OverlayController.showButtons(objOverlayProps);
  41.    };
  42.    this.Overlay.prototype.kill = function(killAdSequence, killOnly)
  43.    {
  44.       var i = 0;
  45.       var l = OverlayController.activeOverlays.length;
  46.       while(i < l)
  47.       {
  48.          if(OverlayController.activeOverlays[i] == this)
  49.          {
  50.             OverlayController.activeOverlays.splice(i,1);
  51.             var nextHeader = OverlayController.headers[i - 1];
  52.             if(OverlayController.headers[i] !== "help")
  53.             {
  54.                if(nextHeader == "help")
  55.                {
  56.                   TardisInterface.setHeader("help");
  57.                }
  58.                else
  59.                {
  60.                   TardisInterface.setHeader(ActiveSection.id);
  61.                }
  62.             }
  63.             else
  64.             {
  65.                if(ActiveSection.id == "feature")
  66.                {
  67.                   TardisInterface.setHeader();
  68.                }
  69.                else
  70.                {
  71.                   TardisInterface.setHeader(ActiveSection.id);
  72.                }
  73.                Tardis.footer.mc_help.gotoAndStop("off");
  74.             }
  75.             OverlayController.headers.splice(i,1);
  76.             break;
  77.          }
  78.          i++;
  79.       }
  80.       OverlayController.numberOfActiveOverlays--;
  81.       if(this.strType == "video")
  82.       {
  83.          lingo("videoOverlay.unloadVideo(true)");
  84.       }
  85.       else
  86.       {
  87.          this.clipname.removeMovieClip();
  88.       }
  89.       Tardis.closeButton_mc.hideCloseButtons();
  90.       var curAd = Tardis.OverlayController.currentAdFile;
  91.       var totalAds = Tardis.OverlayController.numAds;
  92.       var ignore = Tardis.OverlayController.ignoreMultiAdFlag;
  93.       if(Tardis.OverlayController.isMultiFileAdvert && curAd < totalAds && killAdSequence != true && ignore == false)
  94.       {
  95.          trace("***** multi-page ad open");
  96.          if(Tardis.OverlayController.activeOverlays[Tardis.OverlayController.activeOverlays.length - 1].interrupted == true)
  97.          {
  98.             trace("POO POO POO It was interrupted...");
  99.             var obj = Tardis.OverlayController.activeOverlays[Tardis.OverlayController.activeOverlays.length - 1];
  100.             obj.ownerMc._visible = true;
  101.             lingo("videoOverlay.toggleActive(1)");
  102.             trace("-- show buttons ---");
  103.             Tardis.OverlayController.showButtons(obj);
  104.             trace("-- can ya see em? ---");
  105.          }
  106.          else
  107.          {
  108.             trace("add the next multipart advert");
  109.             Tardis.OverlayController.addAdvertOverlay(this,false);
  110.          }
  111.       }
  112.       else
  113.       {
  114.          OverlayController.isMultiFileAdvert = false;
  115.          if(OverlayController.numberOfActiveOverlays)
  116.          {
  117.             var theOverlay = OverlayController.activeOverlays[OverlayController.numberOfActiveOverlays - 1];
  118.             if(theOverlay.strType == "video")
  119.             {
  120.                if(theOverlay.isFullscreen == true)
  121.                {
  122.                   Tardis.closeButton_mc.showCloseButton(theOverlay);
  123.                }
  124.                else
  125.                {
  126.                   TardisInterface.showInterface(2,true);
  127.                }
  128.                if(theOverlay.ownerMc.indexOf("mVideo") != -1)
  129.                {
  130.                   theOverlay.ownerMc._parent._visible = true;
  131.                }
  132.                theOverlay.ownerMc._visible = true;
  133.                lingo("videoOverlay.toggleActive(1)");
  134.             }
  135.             else
  136.             {
  137.                TardisInterface.showInterface(theOverlay.disableLevel,false);
  138.             }
  139.             if(theOverlay.strType == "semiOverlay")
  140.             {
  141.                TardisInterface.showInterface(theOverlay.disableLevel,true);
  142.             }
  143.             OverlayController.resumeOverlay(theOverlay);
  144.             OverlayController.showButtons(theOverlay);
  145.          }
  146.          else if(Tardis.OverlayController.oldObj != null)
  147.          {
  148.             trace("++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  149.             trace("------------ reopen the overlay that was open before....");
  150.             trace("++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  151.             trace("Tardis.OverlayController.oldObj: " + Tardis.OverlayController.oldObj);
  152.             trace("typeof(Tardis.OverlayController.oldObj): " + typeof Tardis.OverlayController.oldObj);
  153.             for(var n in Tardis.OverlayController.oldObj)
  154.             {
  155.                trace("------- " + n + ": " + Tardis.OverlayController.oldObj[n]);
  156.             }
  157.             Tardis.TardisInterface.enable(this.closeBut,"default");
  158.             Tardis.OverlayController.addOverlay(Tardis.OverlayController.oldObj);
  159.             Tardis.OverlayController.oldObj = null;
  160.             trace("delete the oldObj...");
  161.             trace("++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  162.          }
  163.          else
  164.          {
  165.             trace("------------ apparently there was no video overlay open before....");
  166.             if(Tardis.ActiveSection.id == "feature")
  167.             {
  168.                Tardis.splashRestart();
  169.             }
  170.             else if(Tardis.ActiveSection == null && !mc_credits)
  171.             {
  172.                Tardis.splash.fadeSoundLoop();
  173.             }
  174.             if(Tardis.OverlayController.nextSection == null)
  175.             {
  176.                Tardis.TardisInterface.enable(this.closeBut,"default");
  177.             }
  178.             else
  179.             {
  180.                Tardis.TardisInterface.enableAndJumpToSection(Tardis.OverlayController.nextSection,Tardis.OverlayController.nextPage);
  181.             }
  182.          }
  183.          if(!theOverlay || theOverlay.isFullscreen == false)
  184.          {
  185.             trace("* There are no more overlays to show - enable the interface again");
  186.             TardisInterface.showInterface(2,true);
  187.             if(Tardis.blnInExit == true)
  188.             {
  189.                trace("start her up...");
  190.                Tardis.mc_credits.startCountdown();
  191.             }
  192.          }
  193.          else
  194.          {
  195.             for(var i in theOverlay)
  196.             {
  197.                trace(i + " : " + theOverlay[i]);
  198.             }
  199.          }
  200.       }
  201.       OverlayController.deleteOverlayObject(this);
  202.    };
  203.    this.Overlay.prototype.flagFullscreen = function(flag)
  204.    {
  205.       this.isFullscreen = flag;
  206.    };
  207. },addOverlay:function(obj)
  208. {
  209.    trace("");
  210.    trace("** OverlayController.addOverlay()");
  211.    for(var i in obj)
  212.    {
  213.       trace("-- " + i + " : " + obj[i]);
  214.    }
  215.    var numOverlays = this.activeOverlays.length;
  216.    if(numOverlays)
  217.    {
  218.       var i = 0;
  219.       while(i < numOverlays)
  220.       {
  221.          if(this.activeOverlays[i].filename == obj.filename)
  222.          {
  223.             trace("!!! Can\'t open the same overlay twice !!!");
  224.             return undefined;
  225.          }
  226.          i++;
  227.       }
  228.    }
  229.    if(obj.trackingID != null)
  230.    {
  231.       trace("-- adding tracking data for " + obj.filename);
  232.       if(obj.closeBut == "sponsor" || obj.closeBut == "advert")
  233.       {
  234.          trace("");
  235.          trace("");
  236.          trace("LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOK");
  237.          trace("");
  238.          trace("");
  239.          Tardis.UsageData.addAdvertEntry(obj.trackingID,"advert");
  240.       }
  241.       else
  242.       {
  243.          trace("");
  244.          trace("");
  245.          trace("ADDDDDDDDDDDDDDDDDDING PAGE");
  246.          trace("");
  247.          trace("");
  248.          Tardis.UsageData.addPageEntry(obj.trackingID);
  249.       }
  250.    }
  251.    if(Tardis.splash.mcSnd.active == true)
  252.    {
  253.       Tardis.splash.endSoundLoop();
  254.    }
  255.    if(Tardis.ActiveSection.index == 0)
  256.    {
  257.       lingo("Flsh_deleteBespokeSprites()");
  258.    }
  259.    this.clearSkipOrEnterIntID();
  260.    if(numOverlays)
  261.    {
  262.       var i = 0;
  263.       while(i < numOverlays)
  264.       {
  265.          if(this.activeOverlays[i].strType !== "video")
  266.          {
  267.             this.pauseOverlay(this.activeOverlays[i]);
  268.          }
  269.          else
  270.          {
  271.             lingo("videoOverlay.toggleActive(0)");
  272.             trace("");
  273.             trace("----- Video code modified here... check it for FS video fuckups");
  274.             trace("");
  275.          }
  276.          i++;
  277.       }
  278.    }
  279.    if(obj.header !== "help")
  280.    {
  281.       ActiveSection.id != null ? header.go(ActiveSection.id) : header.go("default");
  282.       this.headers.push(ActiveSection.id);
  283.    }
  284.    else
  285.    {
  286.       header.go(obj.header);
  287.       this.headers.push(obj.header);
  288.    }
  289.    var objRef = new this.Overlay(obj);
  290.    this.activeOverlays.push(objRef);
  291.    this.numberOfActiveOverlays = this.activeOverlays.length;
  292. },addAdvertOverlay:function(obj, fromAdvertButton)
  293. {
  294.    if(fromAdvertButton)
  295.    {
  296.       this.numAds = obj.arrXmlAdList.length;
  297.       this.currentAdFile = 1;
  298.       if(this.numAds > 1)
  299.       {
  300.          this.isMultiFileAdvert = true;
  301.       }
  302.       else
  303.       {
  304.          this.isMultiFileAdvert = false;
  305.       }
  306.    }
  307.    else
  308.    {
  309.       var obj = Tardis.adverts.createOverlayObj(obj.arrXmlAdList[this.currentAdFile],obj.arrXmlAdList);
  310.       this.currentAdFile = this.currentAdFile + 1;
  311.    }
  312.    this.addOverlay(obj);
  313. },closeAll:function()
  314. {
  315.    trace("*** Close all the dirty overlays...");
  316.    var numOverlays = Tardis.OverlayController.activeOverlays.length;
  317.    var i = 0;
  318.    while(i < numOverlays)
  319.    {
  320.       var theOverlay = Tardis.OverlayController.activeOverlays[i];
  321.       if(theOverlay.strType == "video")
  322.       {
  323.          lingo("videoOverlay.unloadVideo(true)");
  324.       }
  325.       else
  326.       {
  327.          theOverlay.clipname.removeMovieClip();
  328.       }
  329.       this.deleteOverlayObject(theOverlay);
  330.       i++;
  331.    }
  332.    Tardis.closeButton_mc.hideCloseButtons();
  333.    Tardis.footer.mc_help.gotoAndStop("off");
  334.    Tardis.OverlayController.activeOverlays = [];
  335.    Tardis.TardisInterface.showInterface(2,true);
  336.    this.setButtonsVisible(false);
  337. },setPageToShow:function(pNewSection, pNewPage)
  338. {
  339.    this.nextSection = pNewSection;
  340.    this.nextPage = pNewPage;
  341. },getPageToShow:function()
  342. {
  343.    if(this.nextSection)
  344.    {
  345.       var obj = new Object();
  346.       obj.section = this.nextSection;
  347.       obj.page = this.nextPage;
  348.       return obj;
  349.    }
  350.    return false;
  351. },getLastOverlay:function()
  352. {
  353.    return this.activeOverlays[this.activeOverlays.length - 1];
  354. },removeLastOverlay:function()
  355. {
  356.    trace("--");
  357.    trace("number active: " + this.numberOfActiveOverlays);
  358.    if(this.numberOfActiveOverlays)
  359.    {
  360.       this.activeOverlays[this.numberOfActiveOverlays - 1].kill();
  361.    }
  362.    trace("number active: " + this.numberOfActiveOverlays);
  363.    trace("--");
  364. },pauseOverlay:function(obj)
  365. {
  366.    if(obj.strType == "swf")
  367.    {
  368.       obj.clipname.stop();
  369.       stopAllSounds();
  370.    }
  371.    else if(obj.strType == "video")
  372.    {
  373.       lingo("videoOverlay.disableVideo()");
  374.    }
  375.    this.setButtonsVisible(false);
  376.    obj.clipname._visible = false;
  377. },resumeOverlay:function(obj)
  378. {
  379.    if(obj.strType == "swf")
  380.    {
  381.       obj.clipname.gotoAndPlay(1);
  382.    }
  383.    else if(obj.strType == "video")
  384.    {
  385.       lingo("videoOverlay.enableVideo()");
  386.    }
  387.    this.setButtonsVisible(true);
  388.    obj.clipname._visible = true;
  389. },createOverlayHolder:function()
  390. {
  391.    Tardis.createEmptyMovieClip("overlayHolder_mc",Tardis.depth++);
  392.    Tardis.overlayHolder_mc.depth = 1;
  393.    this.overlayHolder = Tardis.overlayHolder;
  394.    return Tardis.overlayHolder_mc;
  395. },deleteOverlayObject:function(obj)
  396. {
  397.    delete obj;
  398. },setObjProperty:function(prop, val)
  399. {
  400.    this[prop] = val;
  401. },clearSkipOrEnterIntID:function()
  402. {
  403.    clearInterval(this.buttonShowIntID);
  404.    this.buttonShowIntID = null;
  405. },checkCurrentOverlayType:function()
  406. {
  407.    if(this.activeOverlays[this.activeOverlays.length - 1].strType == "video")
  408.    {
  409.       lingo("videoOverlay.enableVideo()");
  410.    }
  411.    else
  412.    {
  413.       trace("flash needs to restart");
  414.       var obj = this.getLastOverlay();
  415.       if(obj.strType != "advert")
  416.       {
  417.          this.resumeOverlay(obj);
  418.       }
  419.       else
  420.       {
  421.          trace("can\'t pause an advert");
  422.       }
  423.    }
  424. },showButtons:function(objOverlayProps)
  425. {
  426.    Tardis.skipOrEnter_mc.showButton(objOverlayProps);
  427.    Tardis.closeButton_mc.showCloseButton(objOverlayProps);
  428.    if(objOverlayProps.allowNeverSee == true && objOverlayProps.closeBut == null)
  429.    {
  430.       Tardis.dontShowAgain_mc.setCheckboxProperty(objOverlayProps.dontShowAgainPropName,"userPrefs");
  431.    }
  432.    else
  433.    {
  434.       Tardis.dontShowAgain_mc.gotoAndStop(1);
  435.    }
  436. },setButtonsVisible:function(v)
  437. {
  438.    Tardis.skipOrEnter_mc._visible = v;
  439.    Tardis.dontShowAgain_mc._visible = v;
  440. }};
  441. OverlayController.init();
  442.